import axios from 'axios';
import { useUserStore } from '@/store/user'; // 确保路径正确

// 创建 axios 实例
const request = axios.create({
    baseURL: '/dev-api',
    timeout: 10000,
    headers: {
        'Content-Type': 'application/json',
        'token': useUserStore().token
        // 移除硬编码的 token 字段
    },
});

// 请求拦截器
request.interceptors.request.use(
    (config) => {
        // 在请求拦截器中获取最新的 token，确保动态更新
        const userStore = useUserStore(); // 在这里调用 useUserStore，避免在模块顶部调用
        const token = userStore.token;

        // 如果 token 存在，则添加到 headers
        if (token) {
            config.headers['token'] = token;
        }

        return config;
    },
    (error) => Promise.reject(error)
);

// 响应拦截器
request.interceptors.response.use(
    (response) => {
        // 直接返回 response.data，保持简洁
        return response.data;
    },
    (error) => {
        // 统一错误处理
        const message = error.response?.data?.message || '请求出错，请稍后重试';

        // 根据状态码处理特定错误
        if (error.response?.status === 401) {
            // token 失效，清除 token 并跳转到登录页
            const userStore = useUserStore();
            userStore.logout(); // logout 方法
            window.location.href = '/login'; // 跳转到登录页
        }

        // 可以通过 UI 组件（如 Element Plus 的 ElMessage）显示错误
        console.error('API Error:', message);

        return Promise.reject(error);
    }
);

export default request;
